/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controladores.Action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;


import AccesoBaseDatos.GatewayFormacionAcademica;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;
/**
 *
 * @author a70204
 */
public class InsertarFormacionAcademicaAction extends org.apache.struts.action.Action {

   /* tenemos una instacia del formbean para sacar los datos */
   private Controladores.Form.InsertarFormacionAcademicaForm formulario;
   //esto son unas etiquetas que me sirven para redireccionar la pagina en la evaluacion de campos
   private final static String SUCCESS = "success";
   private final static String FAILURE = "failure";
   private final static String FALLACONEXION = "fallaConexion";
   ActionForward retorno;
   
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        
        formulario=(Controladores.Form.InsertarFormacionAcademicaForm) form;
        //guarda la pagina para la que se va a redireccionar
        retorno = new ActionForward();
        boolean exito = false;
        if(comprobarCedula(formulario.getCedulaProfesor())||comprobarFecha(formulario.getFecha())){
            //Seteo el error
            ActionErrors errors = new ActionErrors();
            errors.add("Problema", new ActionMessage("errors.noNulos"));
            //almaceno el error
            saveErrors(request, errors);
            retorno = mapping.findForward(FAILURE);       
        }else{//crea la conexion
           GatewayFormacionAcademica gatewayFA = new GatewayFormacionAcademica();
           if(gatewayFA.VerificarExistencia(formulario.getCedulaProfesor())){//actualizar
               exito = gatewayFA.UpdateFA(formulario.getCedulaProfesor(), formulario.getNumeroTitulo(), formulario.getGrado(), formulario.getFecha(), formulario.getNombreEspecialidad(), formulario.getInstitucion());  
           }else{//insertar
               exito = gatewayFA.InsertarFormacionAcademica(formulario.getCedulaProfesor(), formulario.getNumeroTitulo(), formulario.getGrado(), formulario.getFecha(), formulario.getNombreEspecialidad(), formulario.getInstitucion());
           }
           if(exito == true){
                   retorno = mapping.findForward(SUCCESS);
           }else{
                   retorno = mapping.findForward(FALLACONEXION);
           }    
        }
        return retorno;//devuelve el lugar donde se debe devolver el control
    }
    
    public boolean comprobarCedula(String cedula){
        boolean correcto = true;
        if(cedula.equals("")||cedula.length()!=11||cedula.charAt(1)!='-'||cedula.charAt(6)!='-'){
            correcto=true;
        }else{
            
            String uno = cedula.substring(0, 1);
            String dos = cedula.substring(2, 6);
            String tres = cedula.substring(7,10);
            try{
                int p1 = Integer.parseInt(uno);
                int p2 = Integer.parseInt(dos);
                int p3 = Integer.parseInt(tres);
                correcto = false;
            }catch(NumberFormatException e){
                correcto = true;
            }catch(Exception q){
                correcto = true;
            }
        }
        return correcto;
    }
    
    public boolean comprobarFecha(String fecha){
        boolean correcto = true;
        if(fecha.equals("")||fecha.length()!=8||fecha.charAt(2)!='/'||fecha.charAt(5)!='/'){
            correcto=true;
        }else{    
            String uno = fecha.substring(0, 2);
            String dos = fecha.substring(3, 5);
            String tres = fecha.substring(6,7); 
            try{
                int p1 = Integer.parseInt(uno);
                int p2 = Integer.parseInt(dos);
                int p3 = Integer.parseInt(tres);
                correcto = false;//el false es correcto por la forma que tiene el if donde se invoca, dentro del metodo execute
            }catch(NumberFormatException e){
                correcto = true;
            }catch(Exception q){
                correcto = true;
            }
        }
        return correcto;
    }
    
}//fin clase
